<?php
/**
 * Abstract model for database-specific queries
 */
abstract class AbstractSQLDatabaseQuery {
	protected $strDatabaseName;
	
	/**
	 * Initializes database.
	 * 
	 * @param string $strDatabaseName
	 */
	public function __construct($strDatabaseName) {
		$this->strDatabaseName = $strDatabaseName;
	}
	
	/**
	 * Prototypes a query that creates current database.
	 * SQL: CREATE DATABASE {name}
	 */
	abstract public function create();
	
	/**
	 * Prototypes a query that renames current database.
	 * SQL: * (vendor-specific)
	 * 
	 * @param string $strNewDatabaseName
	 */
	abstract public function rename($strNewDatabaseName);
	
	/**
	 * Prototypes a query that drops current database.
	 * SQL: DROP DATABASE {name}
	 */
	abstract public function drop();
	
	/**
	 * Prototypes a query that gets tables in current database.
	 * SQL: * (vendor-specific)
	 */
	abstract public function getTables();	
}